IF exists(SELECT * FROM dbo.sysobjects WHERE name='leesStudiebegeleiding' AND xtype='P') 
BEGIN
	DROP PROCEDURE leesStudiebegeleiding
END
GO

create   Procedure leesStudiebegeleiding
-- De procedure leest de records van een welbepaalde lln. uit de tabel 'dubbeltekst' en 'contracten' in en geeft het resultaat als 
-- XML-bestand weer, in het veld xml van de eerste record.
  (@hetInr varchar(7))
As
set nocount on

-- Een tijdelijke tabel, die de XML-gegevens zal bevatten in de eerste rij, eerste kolom (T-SQL kan nl. geen text exporteren).
create table #werk  (xml text null)
insert into #werk 
values ('')

-- Een pointer naar de XML-tekst:
declare @@ptrval varbinary(16)
select @@ptrval = textptr(xml) from #werk

----------------------------------------------------------------------------
--               consultatie van de tabel 'contracten'
----------------------------------------------------------------------------

--De veranderlijken, die de waarden uit de tabel zullen opslaan en de bijhorende cursor.
declare @studie bit
declare @examen bit
declare @remed bit
declare @gedrag bit
declare @andere bit

--De tabel wordt ingelezen
declare deCursor cursor local for 
  select studiecontract,examencontract, remedieringscontract,gedragscontract, andercontract
  from contracten
  where inschrijvingsNr= @hetInr 
for read only

-- Enkel als er een record is en als aangegevens is dat er een contract bestaat, wordt een XML-tag aangemaakt.

open deCursor
fetch next from deCursor into @studie, @examen, @remed, @gedrag, @andere
if (@@fetch_status=0)
  	if(@studie=1 or @examen=1 or @remed=1 or @gedrag=1 or @andere=1)
	  begin
		-- De hoofdtags worden ingevoegd:
		updatetext #werk.xml @@ptrval null 0 '<contracten>'
		-- De gegevens worden ingevoegd:
		if @studie=1 updatetext #werk.xml @@ptrval null 0 '<studiecontract />'
		if @examen=1 updatetext #werk.xml @@ptrval null 0 '<examencontract />'
		if @remed=1 updatetext #werk.xml @@ptrval null 0 '<remedieringscontract />'
		if @gedrag=1 updatetext #werk.xml @@ptrval null 0 '<gedragscontract />'
		if @andere=1 updatetext #werk.xml @@ptrval null 0 '<andercontract />'
		updatetext #werk.xml @@ptrval null 0 '</contracten>'
	end
deallocate deCursor

----------------------------------------------------------------------------
--               consultatie van de tabel 'instaptoets'
----------------------------------------------------------------------------

--De veranderlijken, die de waarden uit de tabel zullen opslaan en de bijhorende cursor.

declare @schoolTaal char(1)
declare @intTaal char(1)
declare @totTaal char(1)
declare @schoolWisk char(1)
declare @intWisk char(1)
declare @totWisk char(1)
declare @schoolTot char(1)
declare @intTot char(1)
declare @algTot char(1)
declare @toetsDatum char(10)


--De tabel wordt ingelezen
declare deCursor cursor local for 
  select schoolTaal, intTaal, totTaal, 
         schoolWisk, intWisk, totWisk,
	 schoolTot, intTot, algTot,datum
  from instaptoets
  where inschrijvingsNr= @hetInr 
for read only

open deCursor
fetch next from deCursor into @schoolTaal, @intTaal, @totTaal,@schoolWisk, @intWisk, @totWisk,@schoolTot, @intTot, @algTot,@toetsDatum

if (@@fetch_status=0)
  begin
-- De hoofdtags worden ingevoegd:
		updatetext #werk.xml @@ptrval null 0 '<instap>'
		updatetext  #werk.xml @@ptrval null 0 '<titel>Instaptoets afgenomen op ' 
		updatetext  #werk.xml @@ptrval null 0  @toetsDatum 
		updatetext  #werk.xml @@ptrval null 0  '</titel>'
-- De gegevens taal worden ingevoegd:
	updatetext #werk.xml @@ptrval null 0 '<taal>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolTaal
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intTaal
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @totTaal
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	
	updatetext #werk.xml @@ptrval null 0 '</taal>'
-- De gegevens wiskunde worden ingevoegd:
	updatetext #werk.xml @@ptrval null 0 '<rekenen>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolWisk
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intWisk
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @totWisk
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	
	updatetext #werk.xml @@ptrval null 0 '</rekenen>'
-- De gegevens totaal worden ingevoegd:
	updatetext #werk.xml @@ptrval null 0 '<globaal>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolTot
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intTot
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @algTot
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	 
	updatetext #werk.xml @@ptrval null 0 '</globaal>'
-- De sluit-tag
		updatetext #werk.xml @@ptrval null 0 '</instap>'
	end
deallocate deCursor

----------------------------------------------------------------------------
--               consultatie van de tabel 'dubbeltekst'
----------------------------------------------------------------------------

--De veranderlijken, die de waarden uit de tabel zullen opslaan en de bijhorende cursor.
declare @categorie varchar(50)
declare @subcategorie varchar(50)
declare @kleur varchar(50)
declare @klas varchar(50)
declare @naam varchar(50)
declare @iNr varchar(50)
declare @datum varchar(10)
declare @auteur varchar(50)
declare @omschrijving varchar(4000)
declare @remediering varchar(4000)
declare deCursor cursor local for 
  select categorie,subcategorie, kleur, klas, naam, iNr, datum, auteur,omschrijving,remediering
  from dubbeltekst 
  where iNr= @hetInr 
  order by datum  
for read only

-- De hoofdtags worden ingevoegd:
updatetext #werk.xml @@ptrval null 0 '<codes>'

-- De gegevens worden ingevoegd:
open deCursor	
fetch next from deCursor 
     	into @categorie, @subcategorie, @kleur, @klas, @naam, @iNr, @datum, @auteur, @omschrijving, @remediering 
while @@fetch_status = 0
  begin
     -- Behandeling van speciale tekens die niet correct herkend worden door XML.
     select @omschrijving = replace(replace(replace(@omschrijving,'&','&#038;'),'>','&#062;'),'<','&#060;')      
     select @remediering = replace(replace(replace(@remediering,'&','&#038;'),'>','&#062;'),'<','&#060;')      
            updatetext #werk.xml @@ptrval null 0 '<dubbeltekst>' 
        	updatetext #werk.xml @@ptrval null 0 '<categorie>' 
	updatetext #werk.xml @@ptrval null 0 @categorie 
	updatetext #werk.xml @@ptrval null 0 '</categorie>'
	updatetext #werk.xml @@ptrval null 0 '<subcategorie>'
	updatetext #werk.xml @@ptrval null 0 @subcategorie 
	updatetext #werk.xml @@ptrval null 0 '</subcategorie>'
	updatetext #werk.xml @@ptrval null 0 '<kleur>' 
	updatetext #werk.xml @@ptrval null 0 @kleur 
	updatetext #werk.xml @@ptrval null 0 '</kleur>'
	updatetext #werk.xml @@ptrval null 0 '<klas>'
	updatetext #werk.xml @@ptrval null 0 @klas 
	updatetext #werk.xml @@ptrval null 0 '</klas>'
	updatetext #werk.xml @@ptrval null 0 '<naam>' 
	updatetext #werk.xml @@ptrval null 0 @naam 
	updatetext #werk.xml @@ptrval null 0 '</naam>'
	updatetext #werk.xml @@ptrval null 0 '<iNr>'
	updatetext #werk.xml @@ptrval null 0 @iNr 
	updatetext #werk.xml @@ptrval null 0 '</iNr>'
	updatetext #werk.xml @@ptrval null 0 '<datum>' 
	updatetext #werk.xml @@ptrval null 0 @datum
	updatetext #werk.xml @@ptrval null 0 '</datum>'
	updatetext #werk.xml @@ptrval null 0 '<auteur>'
	updatetext #werk.xml @@ptrval null 0 @auteur 
	updatetext #werk.xml @@ptrval null 0 '</auteur>'
	updatetext #werk.xml @@ptrval null 0 '<omschrijving>' 
	updatetext #werk.xml @@ptrval null 0  @omschrijving
	updatetext #werk.xml @@ptrval null 0 '</omschrijving>'
	updatetext #werk.xml @@ptrval null 0 '<remediering>'
	updatetext #werk.xml @@ptrval null 0  @remediering 
	updatetext #werk.xml @@ptrval null 0 '</remediering>'
    updatetext #werk.xml @@ptrval null 0 '</dubbeltekst>' 
    fetch next from deCursor into @categorie, @subcategorie, @kleur, @klas, @naam, @iNr, @datum, @auteur, @omschrijving, @remediering 
  end
deallocate deCursor
updatetext #werk.xml @@ptrval null 0 '</codes>'

--De XML-tekst wordt gexporteerd.
select *  from #werk

return